Certain applications, such as digital signal processing, may process sequences of arrays of digital values, such as digital values representing an analog value for a signal. A processing step that is frequently required in these applications is array reordering including transposing of the dimensions of the array. For example, an array may have rows and columns of values, and the rows of the array may become the columns of a transposition of the array and similarly the columns of the array may become the rows of the transposition of the array.
An example application for array transposition is digital signal processing that uses time-division multiplexing to process digital signal data from multiple channels. The signals from the channels may be sampled in parallel, but the processing of the sampled data may require that a block or packet of data is first assembled from each channel. The processing may be time-division multiplexed to operate on a block of data from each channel in a round-robin order. The sampled data may be considered a sequence of arrays of signal values with each array in the sequence having a number of rows equaling the number of channels and a number of columns equaling the length of the block or packet of data. Transposing of each array in the sequence may be used to assemble a block of data for each channel, and each assembled block of data may be serially processed using time-division multiplexing.
An existing transposition circuit uses two buffers, with each buffer holding one array of data. Columns of data values are written to the first buffer while rows of data values are read from the second buffer. After the first buffer is filled and the second buffer is emptied, the buffers may switch roles in a “ping-pong” operation that writes columns of data to the second buffer and reads rows of data from the first buffer. The “ping-pong” operation may continue with columns of data written to an alternating one of the buffers while rows of rows of data are read from the other one of the buffers.
There is a general need for digital signal processing circuits that efficiently utilize memory and other resources.
The present invention may address one or more of the above issues.